# -*- coding: utf-8 -*-
'''
@文件    :middleware.py
@说明    :全局中间件
@时间    :2023/12/21 12:50:21
@作者    :浪晋
@版本    :1.0
'''

from loguru import logger
from flask import request,g
from utils.dbFunc import MySQLDB as mysql


def init_db():
    """
    全局初始化数据库连接
    """
    g.db = mysql()


def record_api_log(response):
    """
    记录请求响应的日志
    """
    logger.info(f"请求地址:{request.url}")
    logger.info(f"请求类型:{request.method}")
    logger.info(f"请 求 头:{request.headers.get('token')}")
    logger.info(f"请求来源:{request.headers.get('X-Real-Ip') or request.remote_addr}")
    logger.info(f"请求数据:{request.values.to_dict() or str(request.data,'utf-8')}")
    logger.info(f"状 态 码:{response.status_code}")
    logger.info(f"返 回 值:{response.get_json()}")
    return response


def clear_db(exception):
    """
    @功能    :全局断开数据库连接
    @参数    :
    @返回值  :
    @时间    :2023/12/21 01:16:25
    @作者    :浪晋
    @版本    :1.0
    """
    db = getattr(g, 'db', None)
    if db is not None:
        db.close()